﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using NIEN_LUAN.Db;
using System.Windows.Forms;

namespace NIEN_LUAN
{
    public partial class FormLapChungTu : Form
    {
        private DataContentDataContext db = new DataContentDataContext();
        public Db.KHACHHANG khachangAdd;
        public Db.CHUNGTU ChungTuCanIn;
        public FormThongKeChungTu frmThongkeCTCT;
        public FormTimKiemChungTu frmXemCTCT;

        public FormLapChungTu()
        {
            InitializeComponent();
            this.groupBox1.Enabled = false;

            this.btnThoatCT.Enabled = true;
            this.btnLuuCT.Enabled = false;
            this.btnInCT.Enabled = false;
            this.btnHuyCT.Enabled = false;
        }

        public FormLapChungTu(FormThongKeChungTu frm,Db.CHUNGTU ChungTuIn)
        {
            InitializeComponent();
            this.groupBox1.Enabled = false;

            this.btnThoatCT.Enabled = true;
            this.btnLuuCT.Enabled = false;
            this.btnInCT.Enabled = true;
            this.btnHuyCT.Enabled = false;
            this.btnVietCTmoi.Enabled = false;
            this.frmThongkeCTCT = frm;
            this.ChungTuCanIn = ChungTuIn;
        }

        public FormLapChungTu( FormTimKiemChungTu frm, Db.CHUNGTU ChungTuIn)
        {
            InitializeComponent();
            this.groupBox1.Enabled = false;

            this.btnThoatCT.Enabled = true;
            this.btnLuuCT.Enabled = false;
            this.btnInCT.Enabled = true;
            this.btnHuyCT.Enabled = false;
            this.btnVietCTmoi.Enabled = false;
            this.frmXemCTCT = frm;
            this.ChungTuCanIn = ChungTuIn;
        }

        private void btnTimKH_Click(object sender, EventArgs e)
        {
            var kq = new FormChiTietKhachHang(this).ShowDialog();
            if (kq == DialogResult.OK)
            {
                var khachhang = (from m in db.KHACHHANGs
                                 select m).ToList();
                bskhachhang.DataSource = khachhang;
                MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                this.bskhachhang.MoveLast();
            }
        }

        //private void bsKhachHang_CurrentChanged(object sender, EventArgs e)
        //{
        //    var khachhang = this.bsKhachHang.Current as KHACHHANG;
        //    if (khachhang != null)
        //    {
        //        var kh = (from m in db.KHACHHANGs
        //                  where m.MaKhachHang == khachhang.MaKhachHang
        //                  select m).ToList();
        //        this.comboBoxKhachHang.DataSource = kh;
        //    }
        //}

        private void btnHuyCT_Click(object sender, EventArgs e)
        {
            this.txtSCT.ResetText();
            this.comboBoxKH.ResetText();
            this.numericUDTongtien.ResetText();
            this.numericUDTiendatra.ResetText();
            this.dateTimePickerHanttoan.ResetText();
            this.txtSCT.Focus();
            this.dataGridViewDSCTCT.Rows.Clear();
        }

        private void btnThoatCT_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void FormLapChungTu_Load(object sender, EventArgs e)
        {
            this.dataGridViewDSCTCT.AutoGenerateColumns = false;
//<<<<<<< .mine
            
            //var danhsachctct = (from m in db.CHITIETCHUNGTUs
                                
            //                         select m).ToList();
            //this.cHITIETCHUNGTUBindingSource.DataSource = danhsachctct;
            //this.dataGridViewDSCTCT.DataSource = this.cHITIETCHUNGTUBindingSource;

            var khachhang = (from m in db.KHACHHANGs
                             select m).ToList();
            this.bskhachhang.DataSource = khachhang;
            this.comboBoxKH.DataSource = bskhachhang;
            this.comboBoxKH.DisplayMember = "MaKhachHang";

            if ((frmThongkeCTCT != null && ChungTuCanIn != null)||(frmXemCTCT != null && ChungTuCanIn != null))
            {
                this.txtSCT.Text = ChungTuCanIn.SoChungTu;
                this.txtSCT.Enabled = false;
                this.txtMaNV.Text =ChungTuCanIn.MaNhanVien;
                this.comboBoxKH.Text = ChungTuCanIn.KHACHHANG.MaKhachHang;
                this.numericUDTongtien.Value = ChungTuCanIn.TongTien ?? 0;
                this.numericUDTiendatra.Value = ChungTuCanIn.TienDaTra ?? 0;
                this.dateTimePickerHanttoan.Value = ChungTuCanIn.HanThanhToan ?? DateTime.Now;
                this.dateTimePicker1.Value = ChungTuCanIn.NgayLap ?? DateTime.Now;

                var chitietchungtu = (from m in db.CHITIETCHUNGTUs
                                        where m.SoChungTu == ChungTuCanIn.SoChungTu
                                        select new Db.ChitietNhapXuat
                                        {
                                            DonGia = m.DonGiaXuat ?? 0,
                                           // GiaNhap = m.DonGiaNhap ?? 0,
                                            MaHang = m.MaHang,
                                            SoLuong = m.SoLuongXuat ?? 0,
                                            TenHang = m.MATHANG.TenHang

                                        }).ToList();

                this.cHITIETCHUNGTUBindingSource.DataSource = chitietchungtu;
            }

//=======
//>>>>>>> .r144
//            var khachhang = (from m in db.KHACHHANGs
//                             select m).ToList();

//<<<<<<< .mine
////<<<<<<< .mine
////            this.bsKhachHang.DataSource = khachhang;         
////            this.comboBoxKhachHang.DataSource = bsKhachHang;                     
////            this.comboBoxKhachHang.DisplayMember = "TenKhachHang";
////=======
////            //var danhsachkhachhang = (from m in db.KHACHHANGs
////            //                         select m).ToList();
//=======
           
            //var danhsachkhachhang = (from m in db.KHACHHANGs
            //                         select m).ToList();
//>>>>>>> .r145

//            //this.bsKhachHang.DataSource = danhsachkhachhang;
//            //this.txtKH.DataSource = bsKhachHang;
//            //this.txtKH.DisplayMember = "MaKhachHang";
//>>>>>>> .r144
        }

        private void btnVietCTmoi_Click(object sender, EventArgs e)
        {
            this.txtSCT.ResetText();
            this.comboBoxKH.ResetText();
            this.numericUDTongtien.ResetText();
            this.numericUDTiendatra.ResetText();
            this.dateTimePickerHanttoan.ResetText();
            this.txtSCT.Focus();
            this.dataGridViewDSCTCT.Rows.Clear();

            this.btnVietCTmoi.Enabled = false;
            this.btnThoatCT.Enabled = true;
            this.btnLuuCT.Enabled = true;
            this.btnInCT.Enabled = false;
            this.btnHuyCT.Enabled = true;
            this.groupBox1.Enabled = true;
            this.txtMaNV.Text = global.MaNhanVienDangNhap;
        }

        private void btnLuuCT_Click(object sender, EventArgs e)
        {
            var chitietnhapxuat = this.cHITIETCHUNGTUBindingSource.DataSource as List<ChitietNhapXuat>;
            if (chitietnhapxuat == null)
            {
                MessageBox.Show("Chưa chọn hàng!");
                return;
            }
            if (chitietnhapxuat.Count == 0)
            {
                MessageBox.Show("Chưa chọn hàng");
                return;
            }
            if (string.IsNullOrEmpty(this.comboBoxKH.Text))
            {
                MessageBox.Show("Chưa chọn khách hàng");
                return;
            }
            if (this.dateTimePickerHanttoan.Value < DateTime.Now)
            {
                MessageBox.Show("Không thể chọn ngày thanh toán là ngày của quá khứ");
                return;
            }
            if (string.IsNullOrEmpty(this.txtSCT.Text))
            {
                MessageBox.Show("Chưa nhập số chứng từ");
                return;
            }

            var soct = (from m in db.CHUNGTUs
                        where m.SoChungTu == this.txtSCT.Text.Trim()
                        select m).ToList();
            if (soct.Count > 0)
            {
                MessageBox.Show("Ma trung!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (this.numericUDTiendatra.Value == 0)
            {
                MessageBox.Show("Chưa nhập tiền đã trả");
                return;
            }
            if (this.numericUDTiendatra.Value > this.numericUDTongtien.Value)
            {
                MessageBox.Show("Tiền đã trả lớn hớn tổng tiền");
                return;
            }          

            var chungtu = new CHUNGTU
            {
                NgayLap = DateTime.Now,
                SoChungTu = this.txtSCT.Text,
                TienDaTra = this.numericUDTiendatra.Value,
                TongTien = this.numericUDTongtien.Value,
                HanThanhToan = this.dateTimePickerHanttoan.Value,
                MaKhachHang = this.comboBoxKH.Text,
                MaNhanVien = global.MaNhanVienDangNhap
            };

            List<CHITIETCHUNGTU> chitietchungtu = new List<CHITIETCHUNGTU>();
            foreach (var item in chitietnhapxuat)
            {
                chitietchungtu.Add(new CHITIETCHUNGTU
                {
                    DonGiaXuat = item.DonGia,
                    MaHang = item.MaHang,
                    SoChungTu = chungtu.SoChungTu,
                    SoLuongXuat = item.SoLuong

                });
            }

            foreach (var item in chitietchungtu)
            {
                var mathang = db.MATHANGs.Single(m => m.MaHang == item.MaHang);
                if (mathang.SoLuongHienCo < item.SoLuongXuat)
                {
                    MessageBox.Show("Mặt hàng " + mathang.TenHang + " Chỉ còn " + mathang.SoLuongHienCo);
                    return;
                }
                else
                {
                    mathang.SoLuongHienCo = mathang.SoLuongHienCo - item.SoLuongXuat; 
                }
            }


            db.CHUNGTUs.InsertOnSubmit(chungtu);
            db.CHITIETCHUNGTUs.InsertAllOnSubmit(chitietchungtu);

            db.SubmitChanges();

            MessageBox.Show("Tạo chứng từ thành công!");

            this.btnLuuCT.Enabled = false;
            this.btnInCT.Enabled = true;
            this.btnVietCTmoi.Enabled = true;
            this.btnThoatCT.Enabled = true;
            this.btnHuyCT.Enabled = false;
            this.groupBox1.Enabled = false;
            this.Close();
        }

        //private void btnChonMH_Click_1(object sender, EventArgs e)
        //{
        //    var kq = new FormTimChiTietMatHang(this).ShowDialog();
        //    if (kq == DialogResult.OK)
        //    {

        //    }
        //}

        private void btnChonHang_Click(object sender, EventArgs e)
        {
            var kq = new FormTimChiTietMatHang(this).ShowDialog();
            if (kq == DialogResult.OK)
            {

            }
        }

        private void btnChon_Click(object sender, EventArgs e)
        {
            Form frmChonKH = new FormTimKiemKhachHang(this);
            frmChonKH.ShowDialog();            
        }
        private void btnInCT_Click(object sender, EventArgs e)
        {            
            Form frmInCTCT = new FormReportChiTietChungTu(this);
            frmInCTCT.ShowDialog();           
        }
      
    }
}
